package util.AST.Terminal;

import util.AST.AST;
import checker.SemanticException;
import checker.Visitor;

public class Valor extends Terminal {

	private AST node;
	private String tipo;
	
	public Valor(String speling, String tipo){
		super(speling,tipo);
		this.tipo = tipo;
	}

	@Override
	public String toString(int level) {
		String retorno = "";
		if(this.tipo.equals("id")){
			ID id = new ID(super.getSpeling(), this.tipo);
			retorno = id.toString(level);
		}else if(this.tipo.equals("int")){
			NumInt numInt = new NumInt(super.getSpeling(), this.tipo);
			retorno = numInt.toString(level);
		}else if(this.tipo.equals("float")){
			NumFloat numFloat = new NumFloat(super.getSpeling(), this.tipo);
			retorno = numFloat.toString(level);
		}else if(this.tipo.equals("boolean")){
			Booleano bool = new Booleano(super.getSpeling(),this.tipo);
			retorno = bool.toString(level);
		}
		return retorno;
		
	}

	@Override
	public Object visit(Visitor v, Object o) throws SemanticException {
		return v.visitValor(this, o);
	}

	public AST getNode() {
		return node;
	}

	public void setNode(AST node) {
		this.node = node;
	}

	public String getTipo() {
		return this.tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

}
